package org.itstack.chain;

/**
 * 审批处理器接口
 * 定义责任链中每个处理器的基本行为
 */
public interface ApprovalHandler {
    
    /**
     * 处理审批请求
     * @param request 审批请求
     * @return 审批结果，如果当前处理器无法处理则返回null
     */
    ApprovalResult handleRequest(ApprovalRequest request);
    
    /**
     * 设置下一个处理器
     * @param nextHandler 下一个处理器
     */
    void setNextHandler(ApprovalHandler nextHandler);
    
    /**
     * 获取下一个处理器
     * @return 下一个处理器
     */
    ApprovalHandler getNextHandler();
    
    /**
     * 获取处理器名称
     * @return 处理器名称
     */
    String getHandlerName();
    
    /**
     * 处理请求的模板方法
     * 实现责任链的传递逻辑
     * @param request 审批请求
     * @return 审批结果
     */
    ApprovalResult processRequest(ApprovalRequest request);
}
